package pinyin

import (
	"fmt"
	"unicode"

	"github.com/mozillazg/go-pinyin"
)

// 汉字转拼音首字母
// ToPinyinInitials 将字符串转换为拼音首字母
func ToPinyinInitials(s string) string {
	// 创建拼音参数
	args := pinyin.NewArgs()
	args.Style = pinyin.FirstLetter
	// 初始化结果
	result := []rune{}

	// 遍历字符串中的每个字符
	for _, r := range s {
		if isCJKUnifiedIdeograph(r) { // 判断是否为汉字
			pinyinSlice := pinyin.Pinyin(string(r), args)
			if len(pinyinSlice) > 0 && len(pinyinSlice[0]) > 0 {
				result = append(result, []rune(pinyinSlice[0][0])[0])
			} else {
				result = append(result, r)
			}
		} else {
			result = append(result, r)
		}
	}

	return string(result)
}

// 判断是否为汉字
func isCJKUnifiedIdeograph(r rune) bool {
	return unicode.Is(unicode.Han, r)
}

func main() {
	fmt.Println(ToPinyinInitials("拼音"))        // 输出: PY
	fmt.Println(ToPinyinInitials("拼音sw21哈哈哈")) // 输出: pysw21hhh
}
